package com.ruoyi.generator.service.impl;

import java.util.List;
import java.util.Map;

import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.SecurityUtils;
import org.apache.ibatis.annotations.MapKey;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.generator.mapper.FromTableColumnConfigMapper;
import com.ruoyi.generator.domain.FromTableColumnConfig;
import com.ruoyi.generator.service.IFromTableColumnConfigService;

/**
 * 数据列自定义配置__是否展示列、排序等Service业务层处理
 *
 * @author ZGL
 * @date 2025-04-07
 */
@Service
public class FromTableColumnConfigServiceImpl implements IFromTableColumnConfigService
{
    @Autowired
    private FromTableColumnConfigMapper fromTableColumnConfigMapper;

    /**
     * 查询数据列自定义配置__是否展示列、排序等
     *
     * @param id 数据列自定义配置__是否展示列、排序等主键
     * @return 数据列自定义配置__是否展示列、排序等
     */
    @Override
    public FromTableColumnConfig selectFromTableColumnConfigById(Long id)
    {
        return fromTableColumnConfigMapper.selectFromTableColumnConfigById(id);
    }

    /**
     * 查询数据列自定义配置__是否展示列、排序等列表
     *
     * @param fromTableColumnConfig 数据列自定义配置__是否展示列、排序等
     * @return 数据列自定义配置__是否展示列、排序等
     */
    @Override
    public List<FromTableColumnConfig> selectFromTableColumnConfigList(FromTableColumnConfig fromTableColumnConfig)
    {
        return fromTableColumnConfigMapper.selectFromTableColumnConfigList(fromTableColumnConfig);
    }

    /**
     * 新增数据列自定义配置__是否展示列、排序等
     *
     * @param fromTableColumnConfig 数据列自定义配置__是否展示列、排序等
     * @return 结果
     */
    @Override
    public int insertFromTableColumnConfig(FromTableColumnConfig fromTableColumnConfig)
    {
        fromTableColumnConfig.setCreateTime(DateUtils.getNowDate());
        return fromTableColumnConfigMapper.insertFromTableColumnConfig(fromTableColumnConfig);
    }

    /**
     * 修改数据列自定义配置__是否展示列、排序等
     *
     * @param fromTableColumnConfig 数据列自定义配置__是否展示列、排序等
     * @return 结果
     */
    @Override
    public int updateFromTableColumnConfig(FromTableColumnConfig fromTableColumnConfig)
    {
        fromTableColumnConfig.setUpdateTime(DateUtils.getNowDate());
        return fromTableColumnConfigMapper.updateFromTableColumnConfig(fromTableColumnConfig);
    }

    @Override
    public int save(String formBuildKey,List<FromTableColumnConfig> tableColumnConfigs){
        //获取平台用户信息
        LoginUser loginUser = SecurityUtils.getLoginUser();
        /**
         * 删除之前的配置信息
         */
        fromTableColumnConfigMapper.deleteTableColumnConfigByBuildKey(formBuildKey,loginUser.getUsername());
        /**
         * 保存当前配置信息
         */
        for(FromTableColumnConfig config : tableColumnConfigs){
            if("1".equals(config.getIsList())){
                config.setFormBuildKey(formBuildKey);
                config.setCreateBy(loginUser.getUsername());
                config.setIsAllowSort("1".equals(config.getIsAllowSort())?"1":"0");
                config.setFixed("left".equals(config.getFixed()) || "right".equals(config.getFixed())?config.getFixed():"false");
                fromTableColumnConfigMapper.insertFromTableColumnConfig(config);
            }
        }
        return 1;
    }

    /**
     * 批量删除数据列自定义配置__是否展示列、排序等
     *
     * @param ids 需要删除的数据列自定义配置__是否展示列、排序等主键
     * @return 结果
     */
    @Override
    public int deleteFromTableColumnConfigByIds(Long[] ids)
    {
        return fromTableColumnConfigMapper.deleteFromTableColumnConfigByIds(ids);
    }

    /**
     * 删除数据列自定义配置__是否展示列、排序等信息
     *
     * @param id 数据列自定义配置__是否展示列、排序等主键
     * @return 结果
     */
    @Override
    public int deleteFromTableColumnConfigById(Long id)
    {
        return fromTableColumnConfigMapper.deleteFromTableColumnConfigById(id);
    }

    /**
     * 根据表单设置标识与当前用户删除表格自定义配置信息
     */
    @Override
    public int deleteTableColumnConfigByBuildKey(String formBuildKey, String createBy){
        return fromTableColumnConfigMapper.deleteTableColumnConfigByBuildKey(formBuildKey,createBy);
    }

    /**
     * 根据表单设置标识获取对应表格自定义配置信息
     * @param formBuildKey
     * @return
     */
    @Override
    public Map<String, Map> getCustomColumnConfig(String formBuildKey){
        return fromTableColumnConfigMapper.getCustomColumnConfig(formBuildKey);
    }
}
